// index.js

Application.Views.Mixturas = Application.Vista.extend({
	nombre: 'Mixturas',
	initialize: function () {
		this.collection.on('change', this.render, this);
		this.setElement($("#main-content"));
	},
	events: {
		'click .bulk-mixturas'  : 'seleccionarMixturas',
		'click #buscar-mixtura' : 'buscarMixtura',
		'keyup .busca-mixtura'  : 'limpiaMixtura',
		'change .criterio' 		: 'cambiaCriterio',
        'click .seleccionar'    : 'seleccionarMixtura',
		'click .criterio'		: 'cambiaCriterio'
	},

    seleccionarMixtura: function (e) {
        var bulkMixturasSeleccionadas = this.$el.find('.bulk-mixturas').attr('checked') || false,
            mixturaSeleccionada = this.$el.find($(e.currentTarget)).attr('checked') || false;

        if (mixturaSeleccionada !== bulkMixturasSeleccionadas) {
            this.$el.find('.bulk-mixturas').attr('checked', mixturaSeleccionada);
        }
    },
    
	cambiaCriterio: function (e) {
		var criterio = e.target.value;
		this.$el.find('.busca-mixtura').removeClass('hidden').addClass('hidden');
		this.$el.find('.' + criterio).addClass('hidden').removeClass('hidden');
	},

	limpiaMixtura: function (e) {
        var data = this.collection.toJSON();

		if ($(e.currentTarget).val() == '') {
			this.renderMixturas(data);
		}
	},

	buscarMixtura: function () {
		var criterio = '',
			resultSet = [],
			self = this,
            data = this.collection.toJSON();

		criterio = this.$el.find('input[name="criterio"]:checked').val();

		resultSet = _.filter(data, function (mixtura) { 
			var valor = self.$el.find('.busca-mixtura:visible').val(), 
                indice;
            
            indice = ('fecha_cierre' === criterio) ? 'fecha cierre' : 'Mixtura';

			return mixtura[indice].indexOf(valor) > -1; 
		});

		this.renderMixturas(resultSet);
	},

	seleccionarMixturas: function (e) {
		var valor = this.$el.find('.bulk-mixturas').attr('checked') || false;

		$('.seleccionar').each(function () {
			$(this).attr('checked', valor);
		});
	},

	renderMixturas: function (data) {
		var mixturas = '',
			i,
			len;

        if (data.length < 1) {
			this.$el.find('.listado tbody').html('No existen resultados con la b&uacute;squeda especificada');
			return this;
		}

		for (i = 0, len = data.length; i < len ; i++) {			
			mixturas += _.template(Application.Contenido.find('#lista-mixturas').html())({
                DATA: data[i]
            });
		}

		this.$el.find('.listado tbody').html(mixturas);
		
		return this;
	},

	render: function () {
		var 
			data = this.collection.toJSON();

		this.$el.append(_.template(Application.Contenido.find('#mixturas-esqueleto').html()));

		return this.renderMixturas(data);
	},

	onClose: function () {
		this.collection.off('change');
	}
});
